package com.vhall.component.entity.room.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.annotation.JSONType;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 参会信息缓存
 *
 * @author yuanzh
 * @since 2021/9/18
 */
@Data
@JSONType(serialzeFeatures = {SerializerFeature.WriteNullStringAsEmpty})
public class RoomJoinsCacheDTO implements Serializable {

    private static final long serialVersionUID = 1899872823156356653L;

    @JSONField(name = "join_id")
    private Integer joinId;

    @JSONField(name = "room_id")
    private String roomId;

    @JSONField(name = "account_id")
    private Integer accountId;

    private String username;

    private String nickname;

    private String avatar;

    @JSONField(name = "role_name")
    private String roleName;

    @JSONField(name = "is_banned")
    private Integer isBanned;

    @JSONField(name = "is_kicked")
    private Integer isKicked;

    @JSONField(name = "device_type")
    private Integer deviceType;

    @JSONField(name = "device_status")
    private Integer deviceStatus;

    @JSONField(name = "is_signed")
    private Integer isSigned;

    @JSONField(name = "is_answered_questionnaire")
    private Integer isAnsweredQuestionnaire;

    @JSONField(name = "is_lottery_winner")
    private Integer isLotteryWinner;

    @JSONField(name = "is_answered_vote")
    private Integer isAnsweredVote;

    @JSONField(name = "is_answered_exam")
    private Integer isAnsweredExam;

    private Integer status;

    @JSONField(name = "created_at", format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;

    @JSONField(name = "updated_at", format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedAt;

    @JSONField(name = "deleted_at", format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime deletedAt;

    @JSONField(name = "form_id")
    private Integer formId;
    /**
     * 用户进入次数
     */
    @JSONField(name = "user_join_count")
    private Integer userJoinCount;

    /**
     * 是否直播前进入:开播前进入:1,开播后进入:0
     */
    @JSONField(name = "pre_live")
    private Integer preLive;
}
